#!/usr/bin/env node

/**
 * 混淆和还原功能使用示例
 */

import { deobfuscate, obfuscate } from '../../src/hammer/crypto.mts';

console.log('=== 字符串混淆和还原功能演示 ===\n');

// 示例1: 基本用法
console.log('1. 基本用法:');
const originalText = '这是一个需要混淆的长文本字符串，用于演示混淆和还原功能。';
console.log('原始文本:', originalText);

const obfuscatedText = obfuscate(originalText);
console.log('混淆后文本:', obfuscatedText);

const restoredText = deobfuscate(obfuscatedText);
console.log('还原后文本:', restoredText);
console.log('还原是否成功:', originalText === restoredText ? '是' : '否');
console.log();

// 示例2: 自定义步长
console.log('2. 自定义步长:');
const customIntervalText = obfuscate(originalText, 5);
console.log('自定义步长(5)混淆文本:', customIntervalText);
console.log('还原结果:', deobfuscate(customIntervalText));
console.log();

// 示例3: 自定义字符集
console.log('3. 自定义字符集:');
const charset = '!@#$%^&*()';
const customCharsetText = obfuscate(originalText, 7, charset);
console.log('自定义字符集混淆文本:', customCharsetText);
console.log('还原结果:', deobfuscate(customCharsetText));
console.log();

// 示例4: 空字符串处理
console.log('4. 空字符串处理:');
const emptyResult = obfuscate('');
console.log('空字符串混淆结果:', emptyResult);
console.log('空字符串还原结果:', deobfuscate(emptyResult));
console.log();

// 示例5: 性能测试
console.log('5. 性能测试:');
const largeText = 'A'.repeat(10000);
console.time('混淆10000个字符');
const obfuscatedLargeText = obfuscate(largeText);
console.timeEnd('混淆10000个字符');

console.time('还原10000个字符');
const restoredLargeText = deobfuscate(obfuscatedLargeText);
console.timeEnd('还原10000个字符');

console.log(
  '大文本处理结果正确:',
  largeText === restoredLargeText ? '是' : '否',
);
console.log();

console.log('=== 演示完成 ===');
